class CauldronRenderer : public IBlockRenderer
{
public:
	ITexture *Texture;

	CauldronRenderer(ITexture *texture) :
		Texture(texture)
	{
	}

	int GetTypeData(const int &data) { return data; }

	void Render(Schematic *schematic, RendererBase *renderer, const Block &block, const Point3i &position)
	{
		renderer->Draw(Box(Texture, Point3i(16, 16, 2)).SetAll(Point2i(10 * 16, 9 * 16)).SetTop(Point2i(10 * 16, (8 * 16))));
		renderer->Draw(Box(Texture, Point3i(16, 16, 2), Point3i(0, 0, 14)).SetAll(Point2i(10 * 16, 9 * 16)).SetTop(Point2i(10 * 16, (8 * 16) + 14)));
		renderer->Draw(Box(Texture, Point3i(2, 16, 12), Point3i(0, 0, 2)).SetAll(Point2i((10 * 16) + 2, 9 * 16)).SetTop(Point2i(10 * 16, (8 * 16) + 2)));
		renderer->Draw(Box(Texture, Point3i(2, 16, 12), Point3i(14, 0, 2)).SetAll(Point2i((10 * 16) + 2, 9 * 16)).SetTop(Point2i((10 * 16) + 14, (8 * 16) + 2)));

		renderer->Draw(Box(Texture, Point3i(14, 3, 14), Point3i(1, 10, 1)).SetAll(Point2i(11 * 16, 8 * 16)));

		if (block.Data != 0)
		{
			int yOffs = 7;

			switch (block.Data)
			{
			case 2:
				yOffs = 4;
				break;
			case 3:
				yOffs = 1;
				break;
			}

			renderer->Draw(Face(Point3f(1, yOffs, 1), Point3f(15, yOffs, 1), Point3f(15, yOffs, 15), Point3f(1, yOffs, 15), Colorb::White, Texture, Point2i((15 * 16) + 1, (13 * 16) + 1), 15, 15)); 
		}
	}
};